package com.pingan.haofang.searchcloud.quartz.service;

import com.pingan.haofang.searchcloud.common.dto.OperationResult;
import com.pingan.haofang.searchcloud.index.dto.IndexExecutionDTO;
import org.quartz.SchedulerException;

/**
 * @author ex-sunbixiao001
 * @date 2018/6/12
 * @since 1.0.0
 */
public interface IndexBuildScheduleTaskService {

    /**
     * 初始注册所有cronTask
     */
    void refreshAll() throws SchedulerException;


    /**
     * 刷新单条索引
     *
     * @param indexId
     */
    void refresh(Long indexId) throws SchedulerException;


    /**
     * 手动调度
     *
     * @param message
     */
    void doProcess(IndexExecutionDTO message);


    /**
     * 中断任务
     *
     * @param id
     */
    void interrupt(Long id);

    /**
     * 暂停任务
     *
     * @param progressId
     */
    OperationResult pause(Long progressId);

    /**
     * 恢复任务
     *
     * @param progressId
     * @return
     */
    OperationResult resume(Long progressId);

    /**
     * 放弃任务
     *
     * @param progressId
     * @return
     */
    OperationResult abort(Long progressId);

    /**
     * 获得logurl
     *
     * @param progressId
     * @return
     */
    String getLogUrl(Long progressId);

    /**
     * 增量定时任务初始化
     */
    void incScheduleInit() throws SchedulerException;

    /**
     * 刷新单个索引的增量任务
     *
     * @param indexId
     */
    void incScheduleRefresh(Long indexId);

    /**
     * 增量job 暂停
     *
     * @param indexId
     */
    void incSchedulePause(Long indexId);

    /**
     * 增量job 恢复
     *
     * @param indexId
     */
    void incScheduleResume(Long indexId);


}
